home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / perl / 5.10.0 / vars.pm < prev    next >
Text File  |  2008-07-24  |  1KB  |  49 lines

  1. package vars;
  2.  
  3. use 5.006;
  4.  
  5. our $VERSION = '1.01';
  6.  
  7. use warnings::register;
  8. use strict qw(vars subs);
  9.  
  10. sub import {
  11.     my $callpack = caller;
  12.     my ($pack, @imports) = @_;
  13.     my ($sym, $ch);
  14.     foreach (@imports) {
  15.         if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) {
  16.         if ($sym =~ /\W/) {
  17.         # time for a more-detailed check-up
  18.         if ($sym =~ /^\w+[[{].*[]}]$/) {
  19.             require Carp;
  20.             Carp::croak("Can't declare individual elements of hash or array");
  21.         } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) {
  22.             warnings::warn("No need to declare built-in vars");
  23.         } elsif  (($^H &= strict::bits('vars'))) {
  24.             require Carp;
  25.             Carp::croak("'$_' is not a valid variable name under strict vars");
  26.         }
  27.         }
  28.         $sym = "${callpack}::$sym" unless $sym =~ /::/;
  29.         *$sym =
  30.         (  $ch eq "\$" ? \$$sym
  31.          : $ch eq "\@" ? \@$sym
  32.          : $ch eq "\%" ? \%$sym
  33.          : $ch eq "\*" ? \*$sym
  34.          : $ch eq "\&" ? \&$sym 
  35.          : do {
  36.              require Carp;
  37.              Carp::croak("'$_' is not a valid variable name");
  38.          });
  39.     } else {
  40.         require Carp;
  41.         Carp::croak("'$_' is not a valid variable name");
  42.     }
  43.     }
  44. };
  45.  
  46. 1;
  47. __END__
  48.  
  49.